import axios from "axios"
import { Toast } from "@/until/toast"
// import { useUsersStore } from "@/store/user"
// import router from "@/router"

axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8"
    // 创建axios实例
const service = axios.create({
    // axios中请求配置有baseURL选项，表示请求URL公共部分
    // baseURL: 'http://localhost:4001',
    // 超时
    timeout: 15000,
})

// request拦截器
service.interceptors.request.use(
    (config) => {
        // 在这里可以对所有请求进行预处理，比如往请求头中添加token

        const token = localStorage.getItem('authToken');
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`;
        }

        // 如果一切正常，则必须返回config对象或者Promise.resolve(config)
        return config
    },
    (error) => {
        // 对请求错误做些什么
        // 返回Promise.reject(error)，这样会触发后续的错误处理器
        Promise.reject(error)
    },
)

// 响应拦截器
service.interceptors.response.use(
    (res) => {
        let data = res.data
        if (data.code !== 0) {
            Toast.error(data.msg)
            return Promise.reject(data)
        }

        return data // （相录于返回的 res 被自动 剥掉一层，变成 data 字段）
    },
    (error) => {
        // if (error ? .request ? .status === 401 && location.pathname !== "/login") {
        //     // 当用户登录超时时，清空登录状态
        //     const store = useUsersStore()
        //     store.user = {}
        //         // 跳转到登录页
        //     if (error.config.url !== "/api/user/info") {
        //         sessionStorage.setItem("LOGIN_REDIRECT", location.hash.substr(1))
        //         router.replace("/login")
        //     }
        // }
        return Promise.reject(error)
    },
)

export default service